package com.xbts.screen.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xbts.common.core.enums.ConsumeTypeEnum;
import com.xbts.common.core.enums.DateTypeEnum;
import com.xbts.common.core.web.domain.BasePieChartResult;
import com.xbts.common.core.web.domain.BaseHistogramResult;
import com.xbts.common.core.web.domain.BaseRankingResult;
import com.xbts.screen.domain.WeVirtualData;
import com.xbts.screen.domain.vo.ScreenConsumeHistogramVO;
import com.xbts.screen.domain.vo.ScreenQualityDetailsVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 虚拟数据Service接口
 * 
 * @author xbts
 * @date 2024-01-02
 */
public interface IWeVirtualDataService extends IService<WeVirtualData> {

    /**
     * 导入数据
     * @param file
     * @return
     */
    String importData(MultipartFile file);

    /** 大屏-业务信息 */
    BaseHistogramResult screenBusinessDetails();

    /** 大屏-产能信息 */
    BaseHistogramResult screenCapacityDetails();

    /** 大屏-成本信息A */
    List<BasePieChartResult> screenCostDetailsA();

    /** 大屏-成本信息B */
    BaseHistogramResult screenCostDetailsB();

    /** 大屏-能耗信息 */
    ScreenConsumeHistogramVO screenConsumeDetails();

    /** 大屏-品质信息 */
    List<ScreenQualityDetailsVO> screenQualityDetails();

    /** 大屏-品质分析A */
    BaseHistogramResult screenQualityAnalyseA();

    /** 大屏-品质分析B */
    BaseHistogramResult screenQualityAnalyseB();

    /** 业务-天,周,月-详情 */
    BaseHistogramResult businessDetailsByDateType(DateTypeEnum dateType);

    /** 业务-天,周,月-统计 */
    List<BasePieChartResult> businessStatistics(DateTypeEnum dateType);

    /** 业务-天,周,月-排行 */
    List<BaseRankingResult> businessRanking(DateTypeEnum dateType);

    /** 产能-天,周,月-详情 */
    BaseHistogramResult capacityDetailsByDateType(DateTypeEnum dateType);

    /** 能耗-水力,电力-天,周,月-详情 */
    BaseHistogramResult consumeDetailsByDateType(DateTypeEnum dateType, ConsumeTypeEnum consumeType);

    /** 品质-总体-天,周,月-详情 */
    List<BaseHistogramResult> consumeOverallDetailsByDateType(DateTypeEnum dateType);

    /** 品质-车间-天,周,月-详情 */
    List<BaseHistogramResult> qualityWorkshopOverallDetailsByDateType(DateTypeEnum dateType);

    /** 成本-总体-天,周,月-详情 */
    BaseHistogramResult costOverallDetailsByDateType(DateTypeEnum dateType);

    /** 成本-车间-天,周,月-详情 */
    BaseHistogramResult costWorkshopOverallDetailsByDateType(DateTypeEnum dateType);

    /** 成本-总体-水,电,人工,材料-天,周,月-详情 */
    BaseHistogramResult costWorkshopOverallDetailsByDateTypeAndConsumeType(DateTypeEnum dateType, ConsumeTypeEnum consumeType);

    /** 导入模板下载 */
    Map<String, String> template();
}
